﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kokomo.Mirror.PeFormat
{
	public interface IOptionalHeader
	{
		ushort Magic { get; }
		SmallVersion LinkerVersion { get; }
		uint SizeOfCode { get; }
		uint SizeOfInitializedData { get; }
		uint SizeOfUninitializedData { get; }
		uint AddressOfEntryPoint { get; }
		uint BaseOfCode { get; }
		long ImageBase { get; }
		uint SectionAlignment { get; }
		uint FileAlignment { get; }

		Version OperatingSystemVersion { get; }
		Version ImageVersion { get; }
		Version SubsystemVersion { get; }
		uint Win32VersionValue { get; }
		uint SizeOfImage { get; set; }
		uint SizeOfHeaders { get; set; }
		uint CheckSum { get; }

		Subsystem Subsystem { get; }
		DllCharacteristics DllCharacteristics { get; }
		long SizeOfStackReserve { get; }
		long SizeOfStackCommit { get; }
		long SizeOfHeapReserve { get; }
		long SizeOfHeapCommit { get; }
		uint LoaderFlags { get; }
		uint NumberOfRvaAndSizes { get; }
		DataDirectoryEntry[] DataDirectory { get; }
	}
}
